# # 调用函数
# def shi():
#     print('举头望明月，低头思故乡')
#     print('床前明月光，疑是地上霜')
#
#
#   shi()
#
# # 声明函数
# def add():
#     a = 3
#     b = 5
#     s = a + b
#     print(s)
#     return a
#
#
# # 函数的参数传递
# # 第一组
# def add(a , b):   # 括号里面是实参
#      print(a + b)
#
#
# add(1, 3)
#
# # 第二组
# a = 1
# b = 3
# add(a, b)
#
# # 第三组
# add(2 * 3, 4 * 5)
#
# c = 3
# add(8, c * 3)


# # 可变参数
# def favf(*fru):
#     print('我喜欢的水果有：')
#     for i in fru:
#         print(i)
#
#
# favf('苹果')
# favf('苹果', '梨')
# favf('苹果', '梨', '桃子', '橘子', '香蕉')


# # 参数的值大于等于2，如果声明函数的时候有其他形参，通常会把可变长参数放在最后
# def show(a, b, *l):
#     print(a)
#     print(b)
#     print(l)
#
#
# show(1, 2, 4, 5, 6, 7, 9, 56)
#
#
# # 返回值
# def re(a, b, c, d):
#     return a + b, c * d, a - c
#
#
# ss = re(1, 2, 3, 4)
# print(ss)
#
#
# def add(a, b):
#     c = a + b
#     return c, a, b, a*b, a-b
#
#
# d = add(1, 2)
# print(d)
#
#
# # ###变量的作用域
# def fun():
#     a = 20
#     return a
#
#
# a = 10
# print(a)
# print(fun())


# 递归函数
# # 利用递归计算100的阶乘 100！
def f(n):
    if n <= 1:
        return 1
    else:
        return n * f(n - 1)  # 100*f（99)


num = int(input('请输入一个正整数'))  # 输入一个100
s = f(num)
print(num, '的阶乘是：', s)  # 5*4*3*2*1


# 利用递归计算1-100相加之和
def sum(n):
    if n == 1:
        return 1
    else:
        return n + sum(n - 1)


print('1-100相加的和为', sum(100))


# 计算斐波那契数列 F(0)=0,F(1
def fibo(n):
    if n <= 2:
        return 1
    else:
        return fibo(n - 1) + fibo(n - 2)


print('斐波那契数列的第{}项为{}'.format(7, fibo(7)))

# 匿名函数
# <函数名>=lambda <参数列表>:<表达式>
# 使用匿名函数实现a+b+c
sum = lambda a, b, c: a+b+c
print(sum(1, 2, 3))


# 编写lambda函数，参数为正方形的边长m，输出正方形的面积。
fun = lambda m: m**2
print(fun(5))
